package com.emm.yixun.customer.service;

import java.util.Map;

import javax.jws.WebService;

import com.emm.yixun.common.app.base.CommonResDTO;
import com.emm.yixun.common.model.Subscribe;
import com.emm.yixun.common.model.SubscribeInfo;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.BusinessAbnormaDto;
import com.emm.yixun.common.model.dto.SubscribeDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;

@WebService
public interface SubscribeServiceFacade {
	/**
	 * 新增
	 */
	Response<SubscribeDto> save(SubscribeDto dto);

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> updateByPrimaryKey(SubscribeDto dto, Boolean selective);

	/**
	 * 逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 * 主键查询
	 */
	Response<SubscribeInfo> findByIdInfo(Long id);

	/**
	 * 主键查询
	 */
	Response<Subscribe> findById(Long id);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<Subscribe> findByDto(SubscribeDto dto);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<Subscribe> findByDtoJ(SubscribeDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<Subscribe> findPageByDto(SubscribeDto dto, Integer begin, Integer row);

	public Response<Page<SubscribeDto>> getSubscribeList(SubscribeDto reqDto, Integer pageSize, Integer pageNum);

	// 认购
	Response<SubscribeDto> addSubscribe(String params, User user,Long oldId) throws Exception;

	/**
	 * 客户信息 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param id
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	Response<SubscribeDto> selectSubscribeCustomer(Long id);

	/**
	 * 创建延期签约消息
	 * 
	 * @param businessAbnormaDto
	 * @return
	 */
	public CommonResDTO addNotice_YQ(BusinessAbnormaDto businessAbnormaDto, Map<String, Object> managerMap,
			String procInstId);

	/**
	 * 创建退认购消息
	 * 
	 * @param businessAbnormaDto
	 * @return
	 */
	public CommonResDTO addNotice_TRG(BusinessAbnormaDto businessAbnormaDto, Map<String, Object> managerMap,
			String procInstId);

	/**
	 * 认购换房提交审批申请 创建并发送提醒消息 subscribeId 认购ID、procInstId 流程实例ID
	 */
	public CommonResDTO addSubscribeNotice(Long subscribeId, String procInstId);

	/**
	 * 创建认购消息
	 * 
	 * @param subscribeDto
	 * @return
	 */
	public CommonResDTO addNotice_RG(SubscribeDto subscribeDto, String procInstId, String flag);

		/**
		* 方法描述 : 认购经纪人,在换房的过程中,需复制到新到认购记录下
		* 创建者：ThinkPad 
		* 项目名称： emm-marketing-api
		* 类名： RoomMarketingServiceFacade.java
		* 版本： v1.0
		* 创建时间： 2016年8月30日 下午4:38:51
		* @param newSubId
		* @param oldSubId void
		 */
	public void transactionRelationInfo(Long newSubId,Long oldSubId);
		
	/**
	 * querySubscribeExport:(导出认购记录). <br/>
	 *
	 * @author Administrator
	 * @param subscribeDto
	 * @return
	 * @since JDK 1.6
	 */
	ResponseList<SubscribeDto> querySubscribeExport(SubscribeDto subscribeDto);
		
	/**
	 * 流程页面根据oldid查询认购信息
	 */
	ResponseList<Subscribe> getBusinessDetailByOldId(SubscribeDto dto);

	/**
	 * 逾期未签约统计
	 */
	Response<Integer> getOverdueSignedListCount(SubscribeDto dto);

	/**
	 * 逾期未签约
	 */
	Page<SubscribeDto> getOverdueSignedPageModel(SubscribeDto dto, Integer pageSize, Integer pageNum);
}
